class rqueue:#循环队列
    def __init__(self,maxsize):
        self.queue=[None]*maxsize 
        #None 它既不是0，也不是False，也不是空字符串。它只是一个空值的对象，也就是一个空的对象，只是没有赋值而已
        self.front=0 #队首下标，指向队首元素（如果有元素存在)
        self.rear=0 #队尾下标，指向最后一个元素的下一个位置。
        self.maxsize=maxsize #这一行如果删除会出现什么情况？
#入队 rear指向待插入元素位置、空的位置。
    def push(self,value):
        if(self.rear+1)%self.maxsize==self.front:
            print("队列已满\n\n")
        else:
            self.queue[self.rear]=value
            self.rear=(self.rear+1)%self.maxsize
#出队
    def pop(self):
        if(self.front==self.rear):
            print("列表为空")
        else:
            out=self.queue[self.front]
            self.queue[self.front]=None
            self.front=(self.front+1)%self.maxsize
            return out
#打印队列
    def printQueue(self):
        print("队列的输出结果为：")
        if self.rear==self.front:
            print("队列为空")
        else:
            t=self.front
            while t%self.maxsize!=self.rear:
                print(self.queue[t],end=" ")
                t=(t+1)%self.maxsize
        print("\n\n")
#直接输出列表
    def traverse(self):
        print("列表：\n") 
        print(self.queue)
        print("\n\n")

rq=rqueue(6)
print("入队\n\n")
rq.push(1)
rq.push('a')
rq.push('x')
rq.push('&')
rq.push('$')
rq.push('Y')
rq.printQueue()
rq.traverse()
print("出队\n\n")
rq.pop()
rq.printQueue()
rq.traverse()
print("再出队\n\n")
rq.pop()
rq.printQueue()
rq.traverse()
print("入队\n\n")
rq.push('@')
rq.push('#')
rq.printQueue()
rq.traverse()
rq.print()
            